草庐IT

HTTP 服务器

全部标签

go - 是否可以从 websocket 连接访问 HTTP 请求?

我正在使用gorilla网络套接字。是否可以从*websocket.Conn访问HTTP请求?我想访问请求session以识别用户。除了在websocket注册时生成token并在进一步的交互中使用它之外,还有其他方法可以做到这一点吗? 最佳答案 使用Gorillawebsocket包,应用程序编写一个HTTP处理程序并调用upgrader.Upgrade方法来获取连接。这是一个例子:funchandler(whttp.ResponseWriter,r*http.Request){conn,err:=upgrader.Upgrade

http - 为什么 go http 客户端在处理 POST 时放入 transfer-encoding=chunked header

我像这样发出POST请求://...packnon-zerobufreq,_:=http.NewRequest("POST",url,bufio.NewReader(buf))req.Header.Add("X-Uid","12345")req.Header.Add("Content-Length",strconv.Itoa(buf.Len()))client:=http.Client{}resp,err:=client.Do(req)我预计不会传递“Transfer-Encoding”header,但我在服务器日志中看到传递了“Transfer-Encoding:chunked”he

javascript - Vue js axios 向 golang 服务器发出请求,Preflight 错误

我尝试从前端网站(localhost:8888)向golang后端(localhost:8000)发送postapi请求。我收到下面列出的错误。我查看了stackoverflow,问题似乎是跨源请求和预检请求处理。我添加了如下所示的标题,但问题仍然存在。我希望你们能帮助我:)Axios错误:OPTIONShttp://localhost:8000/api/heimdall/signup404(NotFound)Failedtoloadhttp://localhost:8000/api/heimdall/signup:Responsetopreflightrequestdoesn'tpa

go - Web 地址路由在 http.ListenAndServe 上运行良好,但在 cgi.Serve() 上运行失败

我正在使用Go开发网站。服务器限制要求我使用CGI。当我使用http.ListenAndServe()(在下面注释掉)在本地测试以下代码时,会根据请求的地址正确调用各种处理程序。但是,如果我改为使用cgi.Serve(),则会对所有地址执行默认路由器(即始终执行“/”的处理程序)。如果能提供有关如何解决此问题的任何线索,我将不胜感激。编辑:这是我能想到的最简单的测试用例来说明问题://=============简化代码================//packagemainimport("fmt""net/http""net/http/cgi")funcdefaultHandler(

http - 发送 HTTP 响应被阻止,直到 shell 命令完成

想法:有一个Web服务器准备好接收消息,这些消息将触发在服务器上执行命令/测试。我从一个执行简单ping的简单案例开始。下面的代码处理发送到/ping的POST消息,其中包含以下json格式:{"ip":"valid_ip_addr","count":"4"}然后服务器将运行命令ping-c4valid_ip_address期望的结果:如果命令可以.Start()发回200OK。如果有问题,发回错误信息。问题:我在检查.Start()没有给出任何错误后立即发送了一个200OK响应,但这是命令完成后接收。代码:共有三个函数:main()、handler()和ping()。问题出现在最后一

rest - 使用 http 包实现 REST 多资源和标识符

我的应用程序中有产品和项目。产品是项目的集合。例如,T恤是一种产品,它具有尺码和颜色等属性。尺码为S、M、L、XL,颜色为红色、绿色和蓝色。我想使用仅http包构建REST服务。(没有gorillaMux、Goji等)。POSTApi添加产品http://localhost/product对于以上,我使用http.HandleFunc("/product",AddProduct)funcAddProduct(whttp.ResponseWriter,r*http.Request){ifr.Method=="POST"{//Mycode}}我想知道如何实现以下内容:获取特定产品的项目列表

go - 服务多个目录不起作用

有什么方法可以使用fasthttp框架为多个目录提供服务吗?为了同样的目的,我写了下面的代码。但是,这段代码并没有像我预期的那样工作。当我访问localhost:8080/path1时,它会抛出错误和警告,Cannotopenrequestedpath2017/10/1316:57:010.977#0000000100000001-127.0.0.1:8080127.0.0.1:48870-GEThttp://localhost:8080/path1-cannotopenfile"/home/test/path1":open/home/test/path1/path1:nosuchfi

multithreading - Go 服务器在发送 INT 信号后挂起

代码如下:packagemainimport("log"_"net/http/pprof""fmt""net/http""html""os/signal""os")funcmain(){//INTsignalhandlingc:=make(chanos.Signal,1)signal.Notify(c,os.Interrupt)gofunc(){forrangec{log.Println("GOTSIGNAL!")return}}()//INTsignalhandlinghttp.HandleFunc("/bar",func(whttp.ResponseWriter,r*http.Re

http - 将 URL 路径与页面名称与 Go 中的 URL 路由匹配的正确方法?

我正在制作一个Go网站(小型服务),但不知道如何页面URL被验证为正确或未找到404。最终我了解到存在http请求路由器/多路复用器。例子:eg.com/articles/animals/Hippos-are-aquatic-and-land-dwelling=gotopageeg.com/articles/animals/Hippos-are-typofrifjirj=404notfoundpage现在我只看到一种方法可以做到这一点,您可以通过某种方式获得网站上的文章列表,然后以某种方式将其传递到路由器中。您应该如何获得该文章列表?对于动态关系数据库站点:您是否在数据库中查询文章标题

go - 使用 Golang 启动 D-Bus 服务

我现在正在使用适用于golang的D-BusAPI调用并启动一个systemd服务(我的只是调用一个shell脚本)。我在/usr/share/dbus-1/system-services/org.freedesktop.hello.service做了一个D-Bus服务[D-BUSService]Name=org.freedesktop.helloExec=/bin/falseUser=rootSystemdService=hello.service还有/lib/systemd/system/hello.service中的systemd服务[Unit]Description=Hello